"""
4. 切片的使用

题目：编写一个Python程序，随机生成20个由大小写字母、数字和下划线组成的字符组，并使用字符串、列表、集合和元组的方法打印出来。
对字符串和列表切片，用两种方式取出4-14位的字符。
提示：
    1. 使用random.randint()函数生成随机整数。
    2. 使用random.choice()函数从字符组中随机选择一个字符。
    3. 字符串切片：str[start:end]，列表切片：list[start:end]。
"""

import random

# 随机生成20个字符（请补充完整代码）
import random

# 定义可能的字符集合
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_'

# 随机生成20个字符
random_string = ''.join(random.choice(chars) for _ in range(20))

# 打印原始字符串
print("原始字符串：", random_string)

# 将字符串转换为列表、集合和元组
random_list = list(random_string)
random_set = set(random_string)
random_tuple = tuple(random_string)

# 打印列表、集合和元组
print("列表：", random_list)
print("集合：", random_set)
print("元组：", random_tuple)

# 字符串切片
string_slice = random_string[3:14]  # 切片方式一：包含起始索引，不包含结束索引
print("字符串切片（方式一）：", string_slice)

# 字符串切片
string_slice = random_string[3:15]  # 切片方式二：不包含结束索引，需要加1
print("字符串切片（方式二）：", string_slice)

# 列表切片
list_slice = random_list[3:14]  # 切片方式一：包含起始索引，不包含结束索引
print("列表切片（方式一）：", list_slice)

# 列表切片
list_slice = random_list[3:15]  # 切片方式二：不包含结束索引，需要加1
print("列表切片（方式二）：", list_slice)

